#! /bin/bash -e

#docker部署脚本
#  .基于[openjdk]的docker镜像,挂载外部目录和jar直接启动
#  .与直接部署jar相比: 多了'系统隔离',占用资源略多,开机自启更简单
#备份旧程序
#移动程序到指定目录
#删除容器
#启动容器
#设置自启动

echo ;echo ===开始执行脚本
#定位到sh所在目录
cd `dirname $0`
echo 当前目录=`pwd`

app="cicd-0.0.2.jar"
dir="./cicd/"
containerName="cicd"
echo app=$app, dir=$dir
echo containerName=$containerName
mkdir -p $dir/{config,logs}

#备份旧程序
if [ -e $dir$app ]; then
    timeStr=$(date +"%y%m%d_%H%M%S")
    echo 备份文件=$dir$app, 追加=$timeStr
    mv $dir$app $dir$app$timeStr
fi

#移动程序到指定目录
mv $app $dir$app

#删除容器
echo 删除容器--耗时操作:$containerName
docker rm -f $containerName;

#启动容器
#.基于[openjdk]的docker镜像: https://blog.csdn.net/qq_39934154/article/details/121985650
#.指定工作目录: -w 目录路径
#.修正时区和时间: https://blog.csdn.net/qq_41671629/article/details/128176790
#.创建时不设成自启动!避免脚本错误导致一直重启
echo 启动容器--耗时操作
docker run -d \
-p 8080:8080 \
-v `pwd`/$dir:/app \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Shanghai \
-e JAVA_OPTS="-Dfile.encoding=UTF-8" \
-w /app \
--name $containerName \
openjdk:8 \
java -jar /app/$app

#设置自启动
docker update --restart=always $containerName

echo 执行完毕!

#其他命令
# docker logs -f --tail 10 cicd
# docker logs cicd
# docker exec -it cicd /bin/bash
